#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define MAX(a,b) ((a > b)? (a) : (b))
#define MIN(a,b) ((a > b)? (b) : (a))

long long func1(long long a, long long b)
{
	if (a % b == 0)
		return b;
	else
		return func1(b, a % b);
}

int main()
{
	long long a = 0;
	long long b = 0;
	scanf("%lld %lld", &a, &b);
	long long result = func1(MAX(a, b), MIN(a, b));
	printf("%lld", result + a * b / result);
	return 0;
}

//int main()
//{
//	int num = 0;
//	int min = 0;
//	int sec = 0;
//	scanf("%d:%d %d", &min, &sec, &num);
//	int result1 = num / 60;
//	int result2 = num % 60;
//	sec += result2;
//	min += result1 + sec / 60;
//	sec %= 60;
//	min %= 24;
//	printf("%02d:%02d", min, sec);
//	return 0;
//}

//int main()
//{
//	int x = 0;
//	while(1)
//		x = func();
//	return 0;
//}

//int main()
//{
//	float pi = 3.14;
//	int r = 0;
//	scanf("%d", &r);
//	printf("%.2f", 4.0 / 3 * pi * r * r * r);
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("%d", 2 * b - a);
//	return 0;
//}

//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	float x = 0;
//	float sum = 0;
//	float max = 0;
//	float min = 100000;
//	while (n--)
//	{
//		scanf("%f", &x);
//		sum += x;
//		if (x > max)
//			max = x;
//		if (x < min)
//			min = x;
//	}
//	printf("%.2f %.2f %.2f", max, min, sum / n);
//	return 0;
//}